<template>
	<div class="tikuBg">
		
		<div class="banner">
			<image src="https://www.baixuemianshi.com/zhuanti/images/swiper_xcx2.jpg" mode="widthFix"></image>
		</div>
		<u-sticky bgColor="#fff">
			<u-tabs :list="lxList"  :current="yjCurrent" @change="changeTabs"></u-tabs>
			<div v-if="ejlxList.length > 0" class="subFilter">
				<u-tabs :list="ejlxList" :current="ejCurrent" @change="changeEjTabs" lineColor="#f56c6c"></u-tabs>
			</div>
			<div class="searchBox">
				<u-search placeholder="输入关键字搜索" shape="round" v-model="searchVal"></u-search>
			</div>
			
			
		</u-sticky>
		<div class="loadBox" v-if="searchLoading">
			<u-loading-icon size="36" mode="circle" :vertical="true" color="red" text="加载中..." textSize="20"></u-loading-icon>
		</div>
		<div class="container">
			
			<div class="items">
				<div class="item" v-for="(item,index) in searchList" :key="index"  v-show="checkShow(item)">
					<h3>
						<u-parse :content="(index + 1) + '、' + addGl(item.title)" :showImgMenu="false"></u-parse>
					</h3>
					<ul class="tags">
						<u-tag :text="item.leixing" plain size="mini" type="warning"></u-tag>
					</ul>
		
					<div class="btns">
						<div class="btn" v-if="item.hasZzg"><u-button type="error" size="mini" text="查看逐字稿" @click="showAnswer(item)"></u-button></div>
						<div class="btn" v-if="checkFav(item)">
							<u-button type="primary" size="mini" text="添加作业+" @click="addFav(item)"></u-button>
						</div>
						<div class="btn" v-else>
							<u-button type="primary" plain size="mini" text="取消作业+" @click="removeFav(item)"></u-button>
						</div>
					</div>
				</div>
			</div>
		</div>
		
		<div class="detailBtn">
			<div>
				<u-button type="success"  size="small" text="手动输入" @click="showInput = true"></u-button>
			</div>
			<div>
				<u-button type="primary"  size="small" text="已选题目" @click="showDetail = true"></u-button>
			</div>
			<div>
				<u-button type="error"  size="small" text="分享题目" open-type="share"></u-button>
			</div>
		</div>
		
		<div class="detailBox" v-if="showDetail">
			<div class="content">
				<div class="close" @click="showDetail = false"><u-icon name="close-circle" size="28" color="#000"></u-icon></div>
				<div class="item" v-for="(item,index) in banjiDetail.homework[selectIndex].list" :key="index">
					<h3>
						<u-parse :content="(index + 1) + '、' + item.leixing + '-' + item.title" :showImgMenu="false"></u-parse>
					</h3>
					<div class="d_btns">
						<div class="btn"><u-button type="error" size="mini" text="删除" @click="removeFav(item)"></u-button></div>
						<div class="btn" v-if="item.hasZzg"><u-button type="error" size="mini" text="查看逐字稿" @click="showAnswer(item)"></u-button></div>
						
						<div class="time">{{item.time}}</div>
					</div>
				</div>
			</div>
		</div>
		
		
		<u-popup :show="showInput" @close="showInput = false" mode="center" :safeAreaInsetBottom="false">
			<div class="popContent">
				<h3>手动输入内容</h3>
				<div class="inp">
					<u--textarea v-model="newInput" placeholder="请输入内容" maxlength="-1"></u--textarea>
				</div>
				
				<div class="btnBox">
					<u-button type="error" text="立即添加" @click="addInput"></u-button>
				</div>
			</div>
		</u-popup>
		<canvas canvas-id="waterMark" class="waterMark" style="width: 100vw; height: 100vh;"></canvas>
		<image :src="waterMarkUrl" class="waterMark-bg" style="width: 100vw; height: 100vh;"></image>
	</div>
</template>

<script>
	import {
		mapActions
	} from 'vuex';
	const db = wx.cloud.database()
	export default {
		data() {
			return {
				waterMarkUrl: "",
				windowWidth: 100,
				windowHeight: 100,
				zuoyeTitle:"",
				banjiDetail:"",
				allZuti:[],
				selectIndex:[],
				timuDetail:"",
				leixings: [],
				lxList: [],
				lists: [],
				yjCurrent: 1,
				filterLxName: "全部类型",
				ejlxList: [],
				filterErlx: "",
				ejCurrent: 1,
				searchVal: "",
				searchLoading:true,
				addSuccess:false,
				
				selectTao: 0,
				
				allSelect:[],
				homeSelect:[],
				
				showDetail: false,
				showInput: false,
				newInput:""
			}
		},
		onShareAppMessage(res) {
			if (res.from === 'button') { // 来自页面内分享按钮
				return {
					title: `题库-学员端`, //分享标题
					path: '/pages/nbhd/tiku/student', //分享页面路径
					imageUrl: 'https://www.baixuemianshi.com/zhuanti/tiku/images/xcx_share.jpg', //分享图标
					desc: '雪恒教育-白雪面试', //自定义分享描述 
				}
			} else {
				return {
					title: `题库-学员端`, //分享标题
					path: '/pages/nbhd/tiku/student', //分享页面路径
					imageUrl: 'https://www.baixuemianshi.com/zhuanti/tiku/images/xcx_share.jpg', //分享图标
					desc: '雪恒教育-白雪面试', //自定义分享描述 
				}
			}
		},
		onLoad(options) {
			this.zuoyeTitle = options.title
			this.getTimuList(0)
		},
		onShow() {
			if(wx.setVisualEffectOnCapture){
			    wx.setVisualEffectOnCapture({
			        visualEffect: 'hidden',
			        success:(res) => {
			            console.log('success回调',res)
			        },
			    })
			}
		},
		onHide() {
			if(wx.setVisualEffectOnCapture){
			    wx.setVisualEffectOnCapture({
			        visualEffect: 'none',
			        success:(res) => {
			            console.log('success回调',res)
			        },
			    })
			}
		},
		computed: {
			userphone() {
				return this.$store.getters.userphone ? this.$store.getters.userphone : '';
			},
			selectBanji(){
				return this.$store.getters.selectBanji ? this.$store.getters.selectBanji : '';
			},
			
			searchList(){
				let that = this
				let l = []
				if(that.searchVal){
					l = that.lists.filter(item => item.title.indexOf(that.searchVal) != -1)
				}else{
					l = that.lists
				}
				return l
			}
			
		},
		created() {
			let that = this;
		},
		mounted() {
			let that = this 
			
			wx.hideLoading()
			
			if(this.userphone){
				this.drawWaterMark('雪恒教育-白雪面试 ' + this.userphone);
			}else{
				this.drawWaterMark('雪恒教育-白雪面试');
			}
		},
		watch: {},
		methods: {
			...mapActions(['LogSetPhone','LogSetBanji']),
			drawWaterMark(text) {
				this.getDeviceInfo().then(response => {
					const w = response.windowWidth;
					const h = response.windowHeight;
					this.windowWidth = w;
					this.windowHeight = h;
					//创建canvas绘制上下文
					const canvas = uni.createCanvasContext("waterMark", this);
					canvas.clearRect(0, 0, w, h)
					//开始创建一个路径，需要调用fill或者stroke才会使用路径进行填充或描边。
					canvas.beginPath();
					canvas.setFontSize(18);
					canvas.setFillStyle('rgba(0, 0, 0, 0.1)');
					canvas.rotate(-30 * Math.PI / 180)
					if (text) {
						text = this.trim(text)
					}
					const maxWidth = text.length * 18
					for (let x = 0; x < 10; x++) {
						for (let y = 0; y < 20; y++) {
							//在画布上绘制被填充的文本。
							canvas.fillText(text, (maxWidth + 40) * x - 400, 90 * y + 20);
						}
					}
					//将之前在绘图上下文中的描述（路径、变形、样式）画到 canvas 中。
					canvas.draw(false, () => {
						//把当前画布指定区域的内容导出生成指定大小的图片
						uni.canvasToTempFilePath({
							canvasId: "waterMark",
							complete: (res) => {
								this.waterMarkUrl = res.tempFilePath
							}
						}, this)
					})
				});
			},
			trim(str) {
				let trimStr = '';
				const reg = /[\t\r\f\n\s]*/g;
				if (typeof str === 'string') {
					trimStr = str.replace(reg, '');
				}
				return trimStr
			},
			/**
			 * 获取当前设备的信息
			 * **/
			getDeviceInfo() {
				return new Promise((resolve, reject) => {
					uni.getSystemInfo({
						success: (sysInfo) => {
							resolve(sysInfo)
						}
					})
				})
			},
			getTimuInfo(){
				let that = this
				db.collection('nbhd_tiku_banji').where({
					banji: that.selectBanji
				}).get({
					success: function(res) {
						if(res.data.length > 0){
							that.banjiDetail = res.data[0]
							
							that.homeSelect = res.data[0].homeSelect
							res.data[0].homework.map((item,index) => {
								if(item.title == that.zuoyeTitle){
									that.selectIndex = index
								}
							})
							
							
						}
					}
				})
			},
			getTimuList(page){
				let that = this
				wx.cloud.callFunction({
					name: 'get_page_banji',
					data: {
						fncname: 'nbhd_n_tiku_tmList',
						banji: that.selectBanji,
						page: page,
						limit: 100
					},
					complete: res => {
						if(res.result.data.length > 0){
							that.allZuti = that.allZuti.concat(res.result.data)
							let p = page + 1
							that.getTimuList(p)
						}else{
							that.getAllSelect()
						}
						
					}
				})
			},
			getAllSelect(){
				let that = this
				let allArr = []
				that.allZuti.map((item,index) => {
					if(item.type=="刷题模式"){
						item.list.map((t,j) => {
							t.zTitle = item.title
							allArr.push(t)
						})
					}else{
						item.list.map((t,j) => {
							t.map(l => {
								l.zTitle = item.title
								allArr.push(l)
							})
						})
					}
				})
				that.allSelect = allArr
				that.filterLx()
				that.getTimuInfo()
			},
			filterLx() {
				let that = this
				let lxs = that.allSelect.map(item => item.leixing)
				// lxs.unshift('全部类型')
				lxs = [...new Set(lxs)]
				let lxNames = []
				lxs.map(item => {
					lxNames.push({
						"name": item
					})
				})
				that.lxList = lxNames
				that.yjCurrent = 0
				that.filterLxName = lxs[0]
				that.filterList()
			},
			filterList(){
				let that = this
				that.lists = that.allSelect.filter(item => item.leixing == that.filterLxName)
				this.searchLoading = false
			},
			changeTabs(e) {
				this.searchVal = ''
				this.yjCurrent = e.index
				this.filterLxName = e.name
				this.searchLoading = true
				this.lists = []
				this.pages = 0
				this.filterList()
			},
			changeEjTabs(e) {
				this.searchVal = ''
				this.ejCurrent = e.index
				this.filterErlx = e.name
				this.searchLoading = true
				this.lists = []
				this.pages = 0
				this.getList()
			},
			checkFav(item) {
				let that = this
				let idList = that.homeSelect
				let iList = idList.map(info => info._id)
				let c = iList.includes(item._id)
				return !c
				
				
			},
			addFav(item) {
				let that = this
				that.banjiDetail.homework[that.selectIndex].list.push({_id: item._id,leixing: item.leixing,title: item.title,hasZzg: item.hasZzg })
				that.homeSelect.push({_id: item._id,leixing: item.leixing,title: item.title,hasZzg: item.hasZzg})
				that.saveUserInfo()
			},
			removeFav(obj,index) {
				let that = this
				that.banjiDetail.homework[that.selectIndex].list = that.banjiDetail.homework[that.selectIndex].list.filter(item => item._id != obj._id);
				
				that.homeSelect = that.homeSelect.filter(item => item._id != obj._id)
				that.saveUserInfo()
			},
			saveUserInfo(){
				let that = this
				db.collection('nbhd_tiku_banji').doc(that.banjiDetail._id).update({
					data: {
						homework:that.banjiDetail.homework,
						homeSelect: that.homeSelect
					},
					success: function(res) {
						
					}
				})
			},
			addGl(title){
				let that = this
				if(!that.searchVal){
					return title
				}
				let sText = title
				let sKey = "<span class='searchBg'>" + that.searchVal + "</span>"
				let num = -1,
					rStr = new RegExp(that.searchVal, "g"),
					rHtml = new RegExp("\<.*?\>", "ig"), //匹配html元素
					aHtml = sText.match(rHtml); //存放html元素的数组
				sText = sText.replace(rHtml, '{~}'); //替换html标签
				sText = sText.replace(rStr, sKey); //替换key
				sText = sText.replace(/{~}/g, function() { num++;return aHtml[num];});
				return sText
			},
			getTime(){
				let that = this
				let day = new Date()
				let y = day.getFullYear()
				let m = (day.getMonth() + 1).toString().padStart(2, '0');
				let d = day.getDate().toString().padStart(2, '0');
				let hour = day.getHours().toString().padStart(2, '0');
				let miu = day.getMinutes().toString().padStart(2, '0');
				let time = y + '-' + m + '-' + d + ' ' + hour + ':' + miu
				return time
			},
			checkShow(info){
				let that = this
				let allId = that.allSelect.map(item => item._id)
				let i = allId.indexOf(info._id)
				return i != -1 ? false : true
			},
			showAnswer(item){
				let that = this
				uni.navigateTo({
					url:"./answer?tmid=" + item._id
				})
			},
			addInput(){
				let that = this
				let idInfo = that.generateRandomString(20)
				that.banjiDetail.homework[that.selectIndex].list.push({_id: idInfo,leixing: '其他',title: that.newInput })
				that.homeSelect.push({_id: idInfo,leixing: '其他',title: that.newInput })
				that.showInput = false
				that.saveUserInfo()
			},
			generateRandomString(length) {
			    let result = ''; // 存储结果的变量
			    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; // 包含所有可能的字符
			    for (let i = 0; i < length; i++) {
			        const randomIndex = Math.floor(Math.random() * characters.length); // 获取随机索引值
			        result += characters[randomIndex]; // 根据索引从字符集合中选择对应的字符添加到结果中
			    }
			    return result;
			},
			checkShow(info){
				let that = this
				let allId = that.homeSelect.map(item => item._id)
				let i = allId.indexOf(info._id)
				return i != -1 ? false : true
			},
		},
		components: {
			
		}
	};
</script>

<style scoped>
	@import url(./index.css);
	.popContent h3{font-size: 34rpx; font-weight: bold; text-align: center; margin-bottom: 15rpx;}
	.selectBanji{font-size: 26rpx; padding: 15rpx 0;}
</style>